Efficient Testing of Concurrent Programs with Abstraction-Guided Symbolic Execution
نویسندگان
چکیده
ion-Guided Symbolic Execution Neha Rungta, Eric G Mercer and Willem Visser∗ Dept. of Computer Science, Brigham Young University, Provo, UT 84602, USA ∗SEVEN Networks, 901 Marshall Street, Redwood City, CA 94063, USA Abstract. Exhaustive search techniques such as model checking and Exhaustive search techniques such as model checking and symbolic execution are insufficient to detect errors in concurrent programs. In this work we present an abstraction-guided symbolic execution technique that quickly detects errors in concurrent programs that arise from thread schedules and input data values. An abstract system is generated that contains a set of key program locations that are relevant in testing the feasibility of a possible error in the program. We guide a symbolic execution along locations in the abstract system in an effort to generate a corresponding feasible execution trace to the error location. A combination of heuristics are used to automatically rank thread and data non-determinism in order to guide the execution. We demonstrate empirically that abstraction-guided symbolic execution generates feasible execution paths in the actual system to find concurrency errors in a few seconds where exhaustive symbolic execution fails to find the same errors in an hour.
منابع مشابه
Concolic Testing of Multithreaded Programs and Its Application to Testing Security Protocols
Testing concurrent programs that accept data inputs is notoriously hard because, besides the large number of possible data inputs, nondeterminism results in an exponentially large number of interleavings of concurrent events. We propose a novel testing algorithm for concurrent programs in which our goal is not only to execute all reachable statements of a program, but to detect all possible dat...
متن کاملAutomated Testing of Multithreaded Programs Using Race-Detection and Flipping
Testing concurrent programs that accept data inputs is notoriously hard because, besides the large number of possible data inputs, nondeterminism results in an exponentially large number of interleavings of concurrent events. We propose a novel testing algorithm for concurrent programs in which our goal is not only to execute all reachable statements of a program, but to detect all possible dat...
متن کاملCUTE and jCUTE : Concolic Unit Testing and Explicit Path Model-Checking Tools (Tools Paper)
CUTE, a Concolic Unit Testing Engine for C and Java, is a tool to systematically and automatically test sequential C programs (including pointers) and concurrent Java programs. CUTE combines concrete and symbolic execution in a way that avoids redundant test cases as well as false warnings. The tool also introduces a race-flipping technique to efficiently test and model check concurrent program...
متن کاملCUTE and jCUTE : Concolic Unit Testing and Explicit Path Model - Checking
CUTE, a Concolic Unit Testing Engine for C and Java, is a tool to systematically and automatically test sequential C programs (including pointers) and concurrent Java programs. CUTE combines concrete and symbolic execution in a way that avoids redundant test cases as well as false warnings. The tool also introduces a race-flipping technique to efficiently test and model check concurrent program...
متن کاملSigma*: Symbolic Learning of Stream Filters
We present Sigma∗, a novel technique for learning symbolic models of software behavior. Sigma∗ addresses the challenge of synthesizing models of software by using symbolic conjectures and abstraction. By combining dynamic symbolic execution to discover symbolic input-output steps of the programs and counterexample guided abstraction refinement to over-approximate program behavior, Sigma∗ transf...
متن کامل